package com.google.gwt.sample.dynatablerf.server.domain;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

@Entity
@NamedQueries({

		@NamedQuery(name = MaterialProjeto.MATERIALPROJETO_SUGGEST_QUERY, query = "SELECT p FROM MaterialProjeto p WHERE "
				+ "(:projeto is null or p.projeto = :projeto)"
				+ "AND (:suggestParam is null "
				+ "OR p.material.codigoMaterial like :suggestParam "
				+ "OR p.material.descricao like :suggestParam)"),

		@NamedQuery(name = MaterialProjeto.MATERIALPROJETO_PESQUISAR, query = "SELECT p FROM MaterialProjeto p WHERE "
				+ "(:id is null or p.id = :id) "
				+ "AND (:projeto is null or :projeto = p.projeto)"),

		@NamedQuery(name = MaterialProjeto.MATERIALPROJETO_COUNT, query = "SELECT COUNT(*) FROM MaterialProjeto p WHERE "
				+ "(:id is null or p.id = :id) "
				+ "AND (:projeto is null or :projeto = p.projeto)")

})
public class MaterialProjeto extends AbstractEntity implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public static final String MATERIALPROJETO_PESQUISAR = "MaterialProjeto_Pesquisar";

	public static final String MATERIALPROJETO_COUNT = "MaterialProjeto_Count";

	public static final String MATERIALPROJETO_SUGGEST_QUERY = "MaterialProjeto_Suggest_Query";

	@ManyToOne
	private Material material;

	private String naturezaGasto;

	private int quantidade;

	private String unidade;

	private double valor;

	private String status;

	@ManyToOne
	private Projeto projeto;

	public MaterialProjeto() {
		super();
	}

	public MaterialProjeto(Material material, String naturezaGasto,
			int quantidade, String unidade, double valor, String status) {
		this();
		this.material = material;
		this.naturezaGasto = naturezaGasto;
		this.quantidade = quantidade;
		this.unidade = unidade;
		this.valor = valor;
		this.status = status;
	}

	public Material getMaterial() {
		return material;
	}

	public void setMaterial(Material material) {
		this.material = material;
	}

	public String getNaturezaGasto() {
		return naturezaGasto;
	}

	public void setNaturezaGasto(String naturezaGasto) {
		this.naturezaGasto = naturezaGasto;
	}

	public int getQuantidade() {
		return quantidade;
	}

	public void setQuantidade(int quantidade) {
		this.quantidade = quantidade;
	}

	public String getUnidade() {
		return unidade;
	}

	public void setUnidade(String unidade) {
		this.unidade = unidade;
	}

	public double getValor() {
		return valor;
	}

	public void setValor(double valor) {
		this.valor = valor;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}
}
